package br.com.venda;

import java.util.List;


import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import br.com.pessoa.Pessoa;

@Entity
@Table (name = "venda")
@SuppressWarnings("serial")

public class Venda {
	
	private int codigo;
	private String data;
	private String hora;
	private double total;
	private String situacao;
	private Pessoa funcionario;
	private Pessoa cliente;
	private List<ItemVenda> itensVenda;
	
	public Venda(){
		
		
		
	}
	
	@Id
	@Column(name="codigo")
	@GeneratedValue (strategy=GenerationType.AUTO) 
	public int getCodigo() {
		return codigo;
	}
	
	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}
	
	@Column(name="hora")
	public String getHora() {
		return hora;
	}
	public void setHora(String hora) {
		this.hora = hora;
	}
	@Column(name="total")
	public double getTotal() {
		return total;
	}
	public void setTotal(double total) {
		this.total = total;
	}
	
	@Column(name="situacao")
	public String getSituacao() {
		return situacao;
	}
	
	public void setSituacao(String situacao) {
		this.situacao = situacao;
	}
	
//	@ManyToMany(cascade = CascadeType.ALL)
//	@JoinTable(name="VENDA_ITEM", joinColumns = { @JoinColumn(name ="cod_venda") }, 
//				inverseJoinColumns = { @JoinColumn(name ="cod_itens_venda") })
    @ManyToMany(
    		fetch = FetchType.LAZY
        )
        @JoinTable(
            name="venda_item",
            joinColumns=@JoinColumn(name="cod_venda"),
            inverseJoinColumns=@JoinColumn(name="cod_item")
        )
	public List<ItemVenda> getItensVenda() {
		return itensVenda;
	}

	public void setItensVenda(List<ItemVenda> listaVendaArray) {
		this.itensVenda = listaVendaArray;
	}
	
	@ManyToOne(cascade = CascadeType.ALL)
	@JoinColumn	(name = "cod_cliente", insertable = true, updatable = true)  
	public Pessoa getCliente() {
		return cliente;
	}

	public void setCliente(Pessoa cliente) {
		this.cliente = cliente;
	}

	@ManyToOne(cascade = CascadeType.ALL)
	@JoinColumn	(name = "cod_funcionario", insertable = true, updatable = true)  
	public Pessoa getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Pessoa funcionario) {
		this.funcionario = funcionario;
	}
	
	@Column (name="data")
	public String getData() {
		return data;
	}

	public void setData(String data) {
		this.data = data;
	}
	
}
